//登录与注册模块仓库
import { reqGetCode,reqUserRegister,reqUserLogin,reqUserInfo,reqLogout } from "@/api"
import { setToken,getToken,removeToken } from "@/utils/token"
const state={
    code:'',
    token:getToken('TOKEN'),
    userinfo:{}
}
const mutations={
    GETCODE(state,code){
        state.code=code
    },
    //登录标识符
    USERLOGIN(state,token){
        state.token=token
    },
    //用户信息
    USERINFO(state,userinfo){
        state.userinfo=userinfo
    },
    //退出登录后清除用户信息
    CLEARUSERINFO(state){
        console.log('清除信息');
        state.userinfo={},
        state.token="",
        //清除本地存储
        removeToken()
    }
}
const actions={
    //获取验证码
    async GetCode({commit},phone){
        //验证码接口，把验证码接口返回，但是没有通过手机发送验证码，【后台没有做】
        let result= await reqGetCode(phone)
        if(result.code==200){
            commit('GETCODE',result.data)
            return 'ok'
        }else{
            return  Promise.reject(new Error('faile'))
        }
    },
    //用户注册
    async UserRegister({commit},data){
        let result=await reqUserRegister(data)
        if(result.code==200){
            return 'ok'
        }else{
            return  Promise.reject(new Error('faile'))
        }
    },
    //用户登录
    async UserLogin({commit},data){
        let result=await reqUserLogin(data)
        //服务器下发token，用户唯一标识符（uuid）
        //将来通常通过带token找服务器要用户信息进行展示
        if(result.code==200){
            //用户已经成功登陆，并且获取到
            commit('USERLOGIN',result.data.token)
            //持久化存储token
            setToken(result.data.token)
            /* localStorage.setItem("TOKEN",result.data.token) */
            return 'ok'
        }else{
            return  Promise.reject(new Error('faile'))
        }
    },
    //获取用户信息
    async getUserInfo({commit}){
        let result=await reqUserInfo()
        if(result.code==200){
            commit('USERINFO',result.data)
            return 'ok'
        }else{
           /*  return  Promise.reject(new Error('faile')) */
        }
        
    },
    //退出登录
    async getLogout({commit}){
        let result=await reqLogout()
        if(result.code==200){
            console.log('退出成功');
            commit('CLEARUSERINFO')
            return 'ok'
        }else{
            return Promise.reject(new Error('faile'))
        }
    }
}
const getter={}
export default{
    state,
    mutations,
    actions,
    getter
}

